﻿namespace SuperStarDesignerTests
{
  using NUnit.Framework;

  using SuperStarRounds.Models;

  [TestFixture, Description("Tests for content configuration of the application")]
  [Category("Content Inclusion")]
  public class ContentConfigurationTests
  {
    private ContentInclusions defaultInstance;

    [OneTimeSetUp]
    [SetCulture("en-US")]
    public void SharedSetUpRunOnceBeforeAllTestCasesDefinedInThisClass()
    {
      defaultInstance = new ContentInclusions();
    }

    [TearDown]
    [SetCulture("en-US")]
    public void SharedTearDownRunOnceAfterAllTestCasesDefinedInThisClass()
    {
      defaultInstance = null;
    }

    [SetUp]
    [SetCulture("en-US")]
    public void SharedSetUpRunBeforeEachTestCaseInThisClass()
    {
    }

    [TearDown]
    [SetCulture("en-US")]
    public void SharedTearDownRunAfterEachTestCaseInThisClass()
    {
    }

    [Test]
    [SetCulture("en-US")]
    public void DefaultInstanceIncludesAllContent()
    {
      // Book Source Content
      Assert.IsTrue(defaultInstance.IncludeCoreRules);
      Assert.IsTrue(defaultInstance.IncludeAdvancedPlayersGuide);
      Assert.IsTrue(defaultInstance.IncludeAdvancedClassGuide);
      Assert.IsTrue(defaultInstance.IncludeOccultAdventures);
      Assert.IsTrue(defaultInstance.IncludeUltimateCombat);
      Assert.IsTrue(defaultInstance.IncludeUltimateMagic);

      // Class Inclusions
      Assert.IsTrue(defaultInstance.IncludeAlchemist);
      Assert.IsTrue(defaultInstance.IncludeAntiPaladin);
      Assert.IsTrue(defaultInstance.IncludeArcanist);
      Assert.IsTrue(defaultInstance.IncludeBarbarian);
      Assert.IsTrue(defaultInstance.IncludeBard);
      Assert.IsTrue(defaultInstance.IncludeBloodrager);
      Assert.IsTrue(defaultInstance.IncludeBrawler);
      Assert.IsTrue(defaultInstance.IncludeCavalier);
      Assert.IsTrue(defaultInstance.IncludeCleric);
      Assert.IsTrue(defaultInstance.IncludeDruid);
      Assert.IsTrue(defaultInstance.IncludeFighter);
      Assert.IsTrue(defaultInstance.IncludeGunslinger);
      Assert.IsTrue(defaultInstance.IncludeHunter);
      Assert.IsTrue(defaultInstance.IncludeInquisitor);
      Assert.IsTrue(defaultInstance.IncludeInvestigator);
      Assert.IsTrue(defaultInstance.IncludeKineticist);
      Assert.IsTrue(defaultInstance.IncludeMagus);
      Assert.IsTrue(defaultInstance.IncludeMedium);
      Assert.IsTrue(defaultInstance.IncludeMesmerist);
      Assert.IsTrue(defaultInstance.IncludeMonk);
      Assert.IsTrue(defaultInstance.IncludeNinja);
      Assert.IsTrue(defaultInstance.IncludeOccultist);
      Assert.IsTrue(defaultInstance.IncludeOracle);
      Assert.IsTrue(defaultInstance.IncludePaladin);
      Assert.IsTrue(defaultInstance.IncludePsychic);
      Assert.IsTrue(defaultInstance.IncludeRanger);
      Assert.IsTrue(defaultInstance.IncludeRogue);
      Assert.IsTrue(defaultInstance.IncludeSamurai);
      Assert.IsTrue(defaultInstance.IncludeShaman);
      Assert.IsTrue(defaultInstance.IncludeSkald);
      Assert.IsTrue(defaultInstance.IncludeSlayer);
      Assert.IsTrue(defaultInstance.IncludeSorcerer);
      Assert.IsTrue(defaultInstance.IncludeSpiritualist);
      Assert.IsTrue(defaultInstance.IncludeSummoner);
      Assert.IsTrue(defaultInstance.IncludeSwashbuckler);
      Assert.IsTrue(defaultInstance.IncludeWarpriest);
      Assert.IsTrue(defaultInstance.IncludeWitch);
      Assert.IsTrue(defaultInstance.IncludeWizard);
    }
  }
}
